#ifndef __SEMUTIL_H__
#define __SEMUTIL_H__

#include <unistd.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <stdio.h>
#include <stdlib.h>

#define ASSERT(prompt,res) if((res)<0){perror(#prompt);exit(-1);}

/* 
 * Create
 * 创建和获取信号量 ipc 内核对象 id
 * count > 0 表示创建，count = 0 表示获取
 */
int C(int count);

/*
 * Set
 * 初始化第 semnum 个信号量的值为 val
 */
void S(int id, int semnum, int val);

/*
 * Get
 * 获取第 semnum 个信号量的值
 */
int G(int id, int semnum);

/*
 * Delete
 * 删除信号量内核对象
 */
void D(int id);

/*
 * 请求第 semnum 个信号量，将其值减 1
 */
void P(int id, int semnum); 

/*
 * 归还第 semnum 个信号量，将其值加 1
 */
void V(int id, int semnum);


#endif //__SEMUTIL_H__
